package py.com.alfa.escriba.gui.controller.object.admin;

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.ApplicationContext;

import py.com.alfa.escriba.gui.config.EscribaGUIApplicationContextProvider;
import py.com.alfa.escriba.gui.controller.view.Permissions;
import py.com.alfa.escriba.gui.controller.view.View;
import py.com.alfa.escriba.gui.controller.view.ViewManager;
import py.com.alfa.escriba.gui.controller.view.admin.PersonasViewContext;
import py.com.alfa.escriba.gui.controller.view.admin.PersonasViewFragment;
import py.com.alfa.escriba.gui.dto.admin.BarrioDTO;
import py.com.alfa.escriba.gui.dto.admin.ComparecientesDTO;
import py.com.alfa.escriba.gui.dto.admin.DepartamentoDTO;
import py.com.alfa.escriba.gui.dto.admin.DistritoDTO;
import py.com.alfa.escriba.gui.dto.admin.DomicilioDTO;
import py.com.alfa.escriba.gui.dto.admin.EscribanosDTO;
import py.com.alfa.escriba.gui.dto.admin.PaisDTO;
import py.com.alfa.escriba.gui.dto.admin.PersonaDTO;
import py.com.alfa.escriba.gui.dto.admin.PersonaInfoDTO;
import py.com.alfa.escriba.gui.dto.admin.PersonasdocumentosDTO;
import py.com.alfa.escriba.gui.dto.admin.PoderesDTO;
import py.com.alfa.escriba.gui.dto.admin.TabRefDTO;
import py.com.alfa.escriba.gui.dto.admin.TelefonoDTO;
import py.com.alfa.escriba.gui.services.Services;



public class PersonasControllerObject {
	
	private List<PersonaInfoDTO> personas;
	private PersonaDTO filtros;
	private PersonaInfoDTO persona;
	private DomicilioDTO   domicilio;
	private TelefonoDTO    telefono;
	private PersonasdocumentosDTO documento;
	private ComparecientesDTO compareciente;
	private PoderesDTO poder;
	private PoderesDTO poderOri;
	private ViewManager viewManager;
	private String titulo = "";
	private List<TabRefDTO> tipos;
	private List<DepartamentoDTO> departamentos;
	private List<DistritoDTO> distritos;
	private List<BarrioDTO>   barrios;
	private DomicilioDTO      domicilioOri;
	private TelefonoDTO       telefonoOri;
	private PersonasdocumentosDTO      documentoOri;
	private ComparecientesDTO comparecienteOri;
	private List<TabRefDTO> generos;
	private List<TabRefDTO> estadosCiviles;
	private List<TabRefDTO> rolesComp;
	private List<PaisDTO> paises;
//	private TabRefDTO sexo;
//	private TabRefDTO estadoCivil;
//	private PaisDTO pais;
	private List<TabRefDTO> tiposDoc;
	private List<TabRefDTO> tiposPer;
	private boolean juridica;
	private boolean escribano;
	private boolean ruc;
	
	private EscribanosDTO escribanoDTO;
	
	private List<EscribanosDTO> escribanos;
	
	public PersonasControllerObject() {
		ApplicationContext ctx = EscribaGUIApplicationContextProvider.getContext();
		this.setViewManager((ViewManager) ctx.getBean(Services.VIEW_MANAGER));
		this.getViewManager().registerContext(View.PERSONAS, new PersonasViewContext());
		this.setPersonas(new ArrayList<PersonaInfoDTO>());
		this.setPersona(null);
	}

	public PersonasViewFragment view(){
		return (PersonasViewFragment) this.getContext().getViewFragment();
	}

	public PersonasViewContext getContext(){
		return (PersonasViewContext) getViewManager().getContext(View.PERSONAS);
	}
	
	public Permissions getPermissions(){
		return getViewManager().getPermissions();
	}	
	public ViewManager getViewManager() {
		return viewManager;
	}

	public void setViewManager(ViewManager viewManager) {
		this.viewManager = viewManager;
	}

	public String getTitulo() {
		return titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	public List<PersonaInfoDTO> getPersonas() {
		return personas;
	}

	public void setPersonas(List<PersonaInfoDTO> personas) {
		this.personas = personas;
	}

	public PersonaInfoDTO getPersona() {
		if ( this.persona == null) {
			this.persona = new PersonaInfoDTO();
		}
		return persona;
	}

	public void setPersona(PersonaInfoDTO persona) {
		this.persona = persona;
	}

	public DomicilioDTO getDomicilio() {
		if ( this.domicilio == null) {
			this.domicilio = new DomicilioDTO();
		}
		return domicilio;
	}

	public void setDomicilio(DomicilioDTO domicilio) {
		this.domicilio = domicilio;
	}
	
	public DomicilioDTO getDomicilioOri() {
		return domicilioOri;
	}

	public void setDomicilioOri(DomicilioDTO domicilio) {
		this.domicilioOri = domicilio;
	}	

	public List<TabRefDTO> getTipos() {
		return tipos;
	}

	public void setTipos(List<TabRefDTO> tipos) {
		this.tipos = tipos;
	}

	public List<DepartamentoDTO> getDepartamentos() {
		return departamentos;
	}

	public void setDepartamentos(List<DepartamentoDTO> departamentos) {
		this.departamentos = departamentos;
	}

	public List<DistritoDTO> getDistritos() {
		return distritos;
	}

	public void setDistritos(List<DistritoDTO> distritos) {
		this.distritos = distritos;
	}

	public List<BarrioDTO> getBarrios() {
		return barrios;
	}

	public void setBarrios(List<BarrioDTO> barrios) {
		this.barrios = barrios;
	}

	public TelefonoDTO getTelefono() {
		if ( this.telefono == null) {
			this.telefono = new TelefonoDTO();
		}
		return telefono;
	}

	public void setTelefono(TelefonoDTO telefono) {
		this.telefono = telefono;
	}

	public TelefonoDTO getTelefonoOri() {
		return telefonoOri;
	}

	public void setTelefonoOri(TelefonoDTO telefonoOri) {
		this.telefonoOri = telefonoOri;
	}
	
	
	public String descEstado(boolean activo) {
		return (activo)?"SI":"NO";
	}

	public List<TabRefDTO> getGeneros() {
		return generos;
	}

	public void setGeneros(List<TabRefDTO> generos) {
		this.generos = generos;
	}

	public List<TabRefDTO> getEstadosCiviles() {
		return estadosCiviles;
	}

	public void setEstadosCiviles(List<TabRefDTO> estadosCiviles) {
		this.estadosCiviles = estadosCiviles;
	}

	public List<PaisDTO> getPaises() {
		return paises;
	}

	public void setPaises(List<PaisDTO> paises) {
		this.paises = paises;
	}

//	public TabRefDTO getSexo() {
//		return sexo;
//	}
//
//	public void setSexo(TabRefDTO sexo) {
//		this.sexo = sexo;
//	}
//
//	public TabRefDTO getEstadoCivil() {
//		return estadoCivil;
//	}
//
//	public void setEstadoCivil(TabRefDTO estadoCivil) {
//		this.estadoCivil = estadoCivil;
//	}
//
//	public PaisDTO getPais() {
//		return pais;
//	}
//
//	public void setPais(PaisDTO pais) {
//		this.pais = pais;
//	}

	public PersonaDTO getFiltros() {
		return filtros;
	}

	public void setFiltros(PersonaDTO filtros) {
		this.filtros = filtros;
	}

	public List<TabRefDTO> getTiposDoc() {
		return tiposDoc;
	}

	public void setTiposDoc(List<TabRefDTO> tiposDoc) {
		this.tiposDoc = tiposDoc;
	}

	public List<TabRefDTO> getTiposPer() {
		return tiposPer;
	}

	public void setTiposPer(List<TabRefDTO> tiposPer) {
		this.tiposPer = tiposPer;
	}

	public PersonasdocumentosDTO getDocumento() {
		return documento;
	}

	public void setDocumento(PersonasdocumentosDTO documento) {
		this.documento = documento;
	}

	public PersonasdocumentosDTO getDocumentoOri() {
		return documentoOri;
	}

	public void setDocumentoOri(PersonasdocumentosDTO documentoOri) {
		this.documentoOri = documentoOri;
	}

	public boolean isJuridica() {
		return juridica;
	}

	public void setJuridica(boolean juridica) {
		this.juridica = juridica;
	}

	public ComparecientesDTO getCompareciente() {
		return compareciente;
	}

	public void setCompareciente(ComparecientesDTO compareciente) {
		this.compareciente = compareciente;
	}

	public ComparecientesDTO getComparecientenOri() {
		return comparecienteOri;
	}

	public void setComparecienteOri(ComparecientesDTO comparecienteOri) {
		this.comparecienteOri = comparecienteOri;
	}

	public boolean isEscribano() {
		return escribano;
	}

	public void setEscribano(boolean escribano) {
		this.escribano = escribano;
	}

	public boolean isRuc() {
		return ruc;
	}

	public void setRuc(boolean ruc) {
		this.ruc = ruc;
	}

	public EscribanosDTO getEscribanoDTO() {
		return escribanoDTO;
	}

	public void setEscribanoDTO(EscribanosDTO escribanoDTO) {
		this.escribanoDTO = escribanoDTO;
	}

	public List<EscribanosDTO> getEscribanos() {
		return escribanos;
	}

	public void setEscribanos(List<EscribanosDTO> escribanos) {
		this.escribanos = escribanos;
	}

	public PoderesDTO getPoder() {
		return poder;
	}

	public void setPoder(PoderesDTO poder) {
		this.poder = poder;
	}

	public PoderesDTO getPoderOri() {
		return poderOri;
	}

	public void setPoderOri(PoderesDTO poderOri) {
		this.poderOri = poderOri;
	}

	public ComparecientesDTO getComparecienteOri() {
		return comparecienteOri;
	}

	public List<TabRefDTO> getRolesComp() {
		return rolesComp;
	}

	public void setRolesComp(List<TabRefDTO> rolesComp) {
		this.rolesComp = rolesComp;
	}
		
}
